МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІНСТРУКЦІЇ ДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ №1-4
З ПРЕДМЕТУ «Логічне та функційне програмування»
Затверджено
на засіданні кафедри
програмного забезпечення
Протокол №8 від 15.03 2007
Львів-2007
Інструкції до лабораторних робіт №1-4 з курсу “Логічне і функційне програмування” для студентів базового напрямку “Комп’ютерні науки” спеціальності “Програмне забезпечення автоматизованих систем”/ Укл.: Є.В. Левус. – Львів: Видавництво Національного університету “Львівська політехніка”, 2007. – 12 с.
Укладач Левус Є.В., канд. техн. наук, доцент
Відповідальний за випуск Коротрєєва Т.О., канд. техн. наук, доцент
Рецензенти Семотюк В.М., канд. техн. наук, доц.,
Іванців Р.Д., канд. техн. наук, доц.,
Дані інструкції призначені для виконання лабораторних робіт №1-4 з розділу “Функційне програмування” обсягом 12 годин. Матеріали до лабораторної роботи містять тему, мету, перелік термінів, визначень, правил, знання яких необхідні для виконання лабораторної роботи заданої теми, перелік варіантів завдань. Завдання пропонується виконувати у середовищі функційного програмування DrScheme.
Scheme — один з двох найбільш популярних в наші дні діалектів мови Lisp (другий популярний діалект — це Common Lisp). Aвтори мови Scheme — Гай Стіл (Guy L. Steele) і Джеральд Сассмен (Gerald Jay Sussman) з Массачусетського Технологічного Інституту — створили його в середині 1970-років. Робота в середовищі DrScheme можлива в режимі трансляції та інтерпретації. DrScheme містить усі необхідні компоненти для відлагодження функційних програм. Для виконання лабораторних робіт функційною мовою програмування Scheme необхідно вибрати в меню мову Standard.
Лабораторна робота №1.
Тема. Побудова елементарних функційних програм на основі базових елементарних.
Мета. Навчитися створювати прості функції на основі базових примітивів.
Теоретичні матеріали. Поняття функції. Типи даних: атом, список, пара. Функції-примітиви. Конструктор, селектори. Предикати. Умовний вираз. Блокування обчислень. Визначення нової функції.
Варіанти завдання до лабораторної роботи №1.
Варіант 1.
Довизначити функцію CAR(X) для випадку, коли Х є атомом.
Варіант 2.
Побудувати предикат ATOM(X).
Варіант 3.
Довизначити функцію CDR(X) для випадку, коли Х є атомом.
Варіант 4.
Визначити функцію QUADRAT(A,B,C,D), яка за вхідними параметрами формує спискову структуру ((A B) (C D)).
Варіант 5.
Визначити функцію, яка за 2 вхідними параметрами списками виду (A, B, C), (X, Y, Z) будує список (A, Y, Z). Передбачити випадок, якщо на вхід дано 2 порожніх списку, то на вихід – порожній список.
Варіант 6.
Визначити логічну функцію “І” (кон’юнкція) двох аргументів.
Варіант 7.
Визначити функцію, яка за 2 вхідними параметрами списками виду (A, B, C), (X, Y, Z) будує список (B, C, Z). Передбачити випадок, якщо на вхід дано 2 порожніх списку, то на вихід – порожній список.
Варіант 8.
Визначити функцію TYPE(X), яка визначає тип виразу X. Можливі лише 3 типи виразів і відповідні значення функції TYPE: атом, пустий список, непустий список.
Варіант 9.
Визначити логічну функцію “” (імплікація) двох аргументів.
Варіант 10.
Визначити логічну функцію “” (виключаюче додавання) двох аргументів.
Варіант 11.
Визначити логічну функцію заперечення одного аргумента.
Варіант 12.
Визначити логічну функцію дез’юнкція двох аргументів.
Лабораторна робота №2.
Тема. Використання методу рекурсії для написання функційних програм.
Мета. Навчитися створювати функції на основі базових примітивів, використовуючи принцип рекурсії.
Теоретичні матеріали. Поняття рекурсії. Список – рекурсивна структура. Термінальна та рекурсивні гілки в обчислювальному процесі. Розгортка та згортка рекурсії. Порядок гілок в рекурсивних обчисленнях. Нескінченна рекурсія. Рекурсія за аргументом та значенням.
Варіанти завдань до лабораторної роботи №2.
Варіант 1.
Визначити функцію СУМА(Х), де Х - список довільно...